Can't create handler inside thread that has not called Looper.prepare()解决办法

首先要确定的是Android中不能在子线程中来刷新UI线程。所以必须使用android的handler机制。即:
在主activity中定一个Handler的成员,然后实现handlemassage函数,创建线程后在runable的run函数里new一个message,然后指定message对象的what成员,这个是指定message的一个id,然后在run中调用Handler的成员,使用其成员方法中的sendmessage(好像是叫这个),handlemassage函数中参数有个massage,根据该message参数中的what来对你发送message时指定的what来处理UI的功能。Handler的实现实例如下:

1
2
3
4
5
6
7
8
9
10
11
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case CASE1:
//获取传递的数据
//Bundle data = msg.getData();
<strong>//处理UI更新等操作
//......</strong>
}
};
};

然后可以在任何地方调用这个handler,如下:

1
2
3
4
5
6
7
Message msg = new Message();
msg.what = CASE1;
//这三句可以传递数据
//Bundle data = new Bundle();
//data.putInt("COUNT", 100);//COUNT是标签,handleMessage中使用
//msg.setData(data);
handler.sendMessage(msg); // 向Handler发送消息,更新UI

Jerky Lu wechat
欢迎加入微信公众号